package com.hashmapdemo;

import java.util.*;

public class HashMapDemo2 {
    public static void main(String[] args) {
        /*
        某个班级80名学生，现在需要组成秋游活动，
        班长提供了四个景点依次是(A、B、C、D) ,
        每个学生只能选择一个景点，请统计出最终哪个景点想去的人数最多。
         */

        //1.记录同学投票
        //定义一个数组，存储4个景点
        String arr[]={"A","B","C","D"};
        //利用随机数组模拟80个同学的投票，并把投票结果存储起来
        ArrayList<String> list = new ArrayList<>();
        Random random = new Random();
        for (int i = 0; i < 80; i++) {
            int index = random.nextInt(arr.length);
            list.add(arr[index]);
        }

        //2.如果要统计的东西比较多，不方便使用计数器思想
        //我们可以定义map集合，利用集合进行统计。
        HashMap<String, Integer> hashMap = new HashMap<>();
        for (String name : list) {
            //判断当前的景点在map集合当中是否存在
            if(hashMap.containsKey(name)){
                //存在
                //先获取当前景点已经被投票的次数
                Integer count = hashMap.get(name);
                //把新的次数再次添加到集合当中
                hashMap.put(name,++count);
            }else {
                //不存在
                hashMap.put(name,1);
            }
        }
        System.out.println(hashMap);

        //3.求最大值
        int max=0;
        Set<Map.Entry<String, Integer>> entrySet = hashMap.entrySet();
        for (Map.Entry<String, Integer> entry : entrySet) {
            Integer count = entry.getValue();
            if(count>max){
                max=count;
            }
        }
        System.out.println(max);
        //4.判断那个景点的次数与最大值一致
        for (Map.Entry<String, Integer> entry : entrySet) {
            Integer count = entry.getValue();
            if(count==max){
                String key = entry.getKey();
                System.out.println(key);
            }
        }
    }
}
